مشخصات مقاله
-
4247
-
0.0
-
11844
-
0
-
0
محدوده (scope) و طول عمر (lifetime) متغیرها در سی شارپ
در هر زبان برنامه نویسی اجزای برنامه دارای یک سطح و محدوده دسترسی و همچنین طول عمر می باشند. در زبان سی شارپ نیز برای هر متغیر یک بازه یا scope و همچنین طول عمر یا lifetime تعریف شده است.
نمونه های زیادی از تعریف متغیرهای محلی را مشاهده کردیم.
using System;
public class Exercise
{
public static int Main()
{
int number;
return 0;
}
}
در برخی موارد، ممکن است متغیری نیاز داشته باشید که توسط متدهای مختلف یک کلاس قابل دسترسی و اصلاح باشند. برای این منظور، می توانید متغیر مورد نظر را بیرون از محدوده ی (تمامی) متدها تعریف کنید. به چنین متغیری، متغیر سراسری (global variable) می گویند.
ایجاد و استفاده از متغیر سراسری
همان طور که پیش تر ذکر شد، برای ایجاد متغیر سراسری، باید آن را (در) بیرون متدها ولی در محدوده ی کلاس تعریف کرد.
مثال:
using System;
public class Exercise
{
int number;
public static int Main()
{
return 0;
}
}
پس از تعریف متغیر، می توان از هر متدی داخل کلاس برای دسترسی به آن استفاده کرد، از قبیل اصلاح مقدار آن. مثال های زیر را در نظر بگیرید.
using System;
public class Exercise
{
int number;
public void Modify()
{
number = 28;
}
public void Change()
{
number = 405;
}
public static int Main()
{
Exercise exo = new Exercise();
Console.Write("Number: ");
Console.WriteLine(exo.number);
exo.Modify();
Console.Write("Number: ");
Console.WriteLine(exo.number);
exo.Change();
Console.Write("Number: ");
Console.WriteLine(exo.number);
return 0;
}
}
نتیجه
Number: 0 Number: 28 Number: 405 Press any key to continue...
همچنین می توان از متد برای نشان دادن مقدار متغیر سراسری بهره گرفت.
using System;
public class Exercise
{
int number;
public void Modify()
{
number = 28;
}
public void Change()
{
number = 405;
}
public void Show()
{
Console.Write("Number: ");
Console.WriteLine(number);
}
public static int Main()
{
Exercise exo = new Exercise();
exo.Show();
exo.Modify();
exo.Show();
exo.Change();
exo.Show();
return 0;
}
}
متغیرهای ایستا و سراسری
درست برخلاف C++، در سی شارپ امکان تعریف متغیر ایستا درون متد وجود ندارد. راه حل آن تعریف متغیر خارج از محدوده ی متد است، سپس می توان به متغیر مورد نظر از هر متدی که به آن نیاز دارد دست پیدا کرد.
مثال:
using System;
public class Exercise
{
static int number;
public void Modify()
{
number = 28;
}
public void Change()
{
number = 405;
}
public void Show()
{
Console.Write("Number: ");
Console.WriteLine(number);
}
public static int Main()
{
Exercise exo = new Exercise();
exo.Show();
exo.Modify();
exo.Show();
exo.Change();
exo.Show();
return 0;
}
}